import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;


/**
 * La boutique qui permet d'acheter des obstacles pour proteger ses escargots.
 *
 */

public class BoutiqueAchatObstacle extends Boutique {

	
	private BarreDeJeu barreDeJeu;
	private JPanel confirmationAchatObstacle;
	private JLabel imageBoutiqueAchatObstacle = new JLabel(new ImageIcon("img/AchatObstacle.png"));
	
	private int prixObstacle=10;
	private int NombreObstacle=0;
	private int nombreMaximumObstable=15;

			
	/**
	 * Constructeur de la classe BoutiqueAchatObstacle
	 * 
	 * @param _barreDeJeu
	 * @param _tirelire
	 */
	public BoutiqueAchatObstacle(BarreDeJeu _barreDeJeu, Tirelire _tirelire) {
		super(_tirelire);
		this.barreDeJeu=_barreDeJeu;
	}
	
	/**
	 * Permet d'acheter des obstacles
	 */
    public  void achatObstacle() { 
	 	if(verifierEtatTirelire(getPrixObstacle())){//On regarder si on peut a assez d'argent dans la tirelire
	 		if(getNombreObstacle()<getNombreMaximumObstable()){//On regarde si le quota maximum d'obstacle est atteint	
	 		 	setNombreObstacle(getNombreObstacle()+1);
	 		 	creerObstacle();
	 		}
	 		else{messageErreurEnvironnement();
	 		}
	 		
	 	}
    }
    
    /**
     * Permet de creer des obtacles
     */
    public void creerObstacle(){
    	Obstacle obstacle = new Obstacle((int) (Math.random() * (1024-53)),(int)(Math.random() 
				* (700-75)),100, 50,barreDeJeu.getEnvironnement());
	barreDeJeu.getEnvironnement().getModele().addObstacle(obstacle);
	
    }
    
    /**
     * Initialise la fenetre qui permet de confirmerl'achat un obstacle
     */
    public void confirmerActionAchatObstacle(){
    	//Configuration de la fenetre
    	this.setUndecorated(true);
    	this.setSize(150,50);
    	this.setLocation(700,300);
    	this.setTitle("Confirmer l'action ?");
    	this.toFront();
    
    	//Creation des boutons Oui et Non
    	boutonNon = new JButton(new ImageIcon("img/BoutonNon.png")); //changer image
  	    boutonOui = new JButton(new ImageIcon("img/BoutonOUI.png"));
    	
  	    //Ajout de la possibilitee d'interagir avec les boutons
		boutonOui.addActionListener(this);
		boutonNon.addActionListener(this);
		boutonOui.setToolTipText("Oui");
		boutonNon.setToolTipText("Non");
		
		//Placement des boutons et de l'image dans la fenetre
		boutonOui.setBounds(0,0,50,50);
		boutonNon.setBounds(100,0,50,50);
		imageBoutiqueAchatObstacle.setBounds(50,0,50,50);
		
		//Configuration des boutons
		boutonOui.setBorderPainted(false);
		boutonOui.setOpaque(false);
		boutonOui.setContentAreaFilled(false);
		boutonNon.setBorderPainted(false);
		boutonNon.setOpaque(false);
		boutonNon.setContentAreaFilled(false);
		
		//Creation de la fentre et ajout des boutons et image
		confirmationAchatObstacle = new JPanel(new BorderLayout(0,0));
		confirmationAchatObstacle.add(boutonOui);
		confirmationAchatObstacle.add(boutonNon);
		confirmationAchatObstacle.add(imageBoutiqueAchatObstacle);
		
		add(confirmationAchatObstacle);
		
    }
    
    /**
     * Affiche la fenetre pour confirmer l'action de confirmer l'achat d'un obstacle
     */
    public void afficherConfimerActionAchatObstacle(){
    	this.setVisible(true);
    }
    
    /**
     * Fonction qui permet d'interagir avec les boutons
     */
    public void actionPerformed(ActionEvent arg) {
        if (arg.getSource()==boutonOui){
        	achatObstacle();
            this.setVisible(false);
      	}
    	if (arg.getSource()==boutonNon){
            this.setVisible(false);
      	}
}
 
    
    
    //GET&SET
    
	public  int getNombreObstacle() {
		return NombreObstacle;
	}

	public int getPrixObstacle() {
		return prixObstacle;
	}

	public void setPrixObstacle(int prixObstacle) {
		this.prixObstacle = prixObstacle;
	}

	public void setNombreObstacle(int nombreObstacle) {
		this.NombreObstacle = nombreObstacle;
	}

	public int getNombreMaximumObstable() {
		return nombreMaximumObstable;
	}
	

}
